Spring Framework-এ JDBC (Java Database Connectivity) হলো ডাটাবেসের সাথে সংযোগ স্থাপন এবং ডাটা অ্যাক্সেস করার একটি গুরুত্বপূর্ণ মাধ্যম। Spring Framework, স্ট্যান্ডার্ড JDBC API-এর উপর ভিত্তি করে কাজ করে, তবে এটি JDBC-এর সীমাবদ্ধতাগুলো দূর করে এবং ডাটাবেস অ্যাক্সেস প্রক্রিয়াকে আরও কার্যকর ও সহজ করে তোলে।
Spring JDBC, ডাটাবেস অ্যাক্সেস সম্পর্কিত নিম্নলিখিত প্রধান সমস্যা সমাধান করে:
স্ট্যান্ডার্ড JDBC API ব্যবহার করার সময় অনেক বয়লারপ্লেট কোড যেমন:
Spring JDBC এই কাজগুলো অটোমেটিকভাবে পরিচালনা করে, ফলে ডেভেলপারদের কোড অনেক কমপ্যাক্ট এবং রিডেবল হয়।
Spring Framework নিজেই JDBC রিসোর্সগুলো (Connection, Statement, ResultSet) পরিচালনা করে এবং সেগুলো সঠিকভাবে ক্লোজ করে। এটি ডাটাবেস লিকের সমস্যা দূর করে।
উদাহরণ:
try (Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement("SELECT * FROM users")) {
ResultSet rs = statement.executeQuery();
// Process results
} catch (SQLException ex) {
// Handle exception
}
উপরোক্ত কোড Spring JDBC দিয়ে সহজে হ্যান্ডেল করা যায়।
JDBC API-তে SQL Exception সাধারণত চেকড এক্সসেপশন হিসেবে থ্রো হয়। Spring JDBC এই Exception-গুলোকে DataAccessException
-এ কনভার্ট করে, যা Runtime Exception এবং আরও ব্যবহারযোগ্য।
Spring JDBC ব্যবহার করে ডাটাবেস কোডকে আরও ভালভাবে স্ট্রাকচার করা যায়:
Spring Framework-এর টেমপ্লেট ক্লাস যেমন:
এই টেমপ্লেটগুলো ডাটাবেস অ্যাক্সেসের কাজগুলোকে সহজ এবং পুনর্ব্যবহারযোগ্য করে তোলে।
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
PreparedStatement ps = connection.prepareStatement("SELECT * FROM employees");
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.println("Employee Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class EmployeeDAO {
private JdbcTemplate jdbcTemplate;
public EmployeeDAO(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<Employee> getAllEmployees() {
String sql = "SELECT * FROM employees";
return jdbcTemplate.query(sql, (rs, rowNum) -> {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setName(rs.getString("name"));
return employee;
});
}
}
Spring JDBC, ডাটাবেসের সাথে যোগাযোগ সহজতর করে এবং কোড আরও কার্যকর, রিডেবল এবং রিইউজেবল করে তোলে।
Read more